package gorms

import (
	"gitee.com/injoyai/goutil/database"
	"github.com/jinzhu/gorm"
)

var DB *GDB

// New 新建gorm,单例模式gorms.DB
// @sqlType,数据库类型
// @sqlDns,数据库连接
func New(sqlType, sqlDns string) error {
	db, err := gorm.Open(sqlType, sqlDns)
	DB = newDB(db)
	return err
}

func Init(db *gorm.DB) *GDB {
	//db.DB().SetConnMaxIdleTime()////设置最大空闲时间(这个不知道干嘛的)
	db.DB().SetConnMaxLifetime(database.MaxLifetime) //设置连接超时时间(超时会断开连接)
	db.DB().SetMaxIdleConns(database.MaxIdleConn)    //设置空闲数(一直连接不断开)
	db.DB().SetMaxOpenConns(database.MaxOpenConn)    //设置连接数(超出最大数量会等待)
	DB = newDB(db)
	return DB
}

func Where(query interface{}, args ...interface{}) *GDB {
	return DB.Where(query, args...)
}

func Like(query, arg string) *GDB {
	return DB.Like(query, arg)
}

func In(query string, args ...interface{}) *GDB {
	return DB.In(query, args...)
}

func Limit(size int, start ...int) *GDB {
	return DB.Limit(size, start...)
}

func Desc(name string) *GDB {
	return DB.Desc(name)
}

func Asc(name string) *GDB {
	return DB.Asc(name)
}

func Session(fn func(db *gorm.DB) error) error {
	return DB.Session(fn)
}

func Session2(fn func(db *GDB) error) error {
	return DB.Session2(fn)
}

func CreateTable(tables ...interface{}) error {
	return DB.CreateTable(tables...)
}
